home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Revista CD Expert 8
/
Revista CD Expert nº 08 CD1.iso
/
Utilitarios
/
Programacao
/
Pacific C for DOS
/
HELP
/
ERR.REF
< prev
next >
Wrap
Text File
|
1995-03-08
|
111KB
|
2,614 lines
INDEX 584 13 C Compiler Error Reference
22 3 #define syntax error
217 2 #elif may not follow #else
337 3 #elif must be in an #if
535 1 #else may not follow #else
615 1 #else must be in an #if
671 3 #error: *
846 3 #if ... sizeof() syntax error
1038 2 #if ... sizeof: bug, unknown type code *
1199 3 #if ... sizeof: illegal type combination
1383 2 #if bug, operand = *
1543 3 #if sizeof() error, no type specified
1762 3 #if sizeof, unknown type *
1931 3 #if value stack overflow
2142 3 #if, #ifdef, or #ifndef without an argument
2350 7 #include syntax error
2727 2 '.' expected after '..'
2875 2 '.' not followed by 'w' or 'b'
3030 4 '=' expected after lle
3166 4 '=' expected after p
3291 3 'case' not in switch
3470 4 'default' not in switch
3649 2 ( expected
3775 3 ) expected
3933 4 , expected
4211 3 -s, too few values specified in *
4397 1 -s, too many values, * unused
4501 3 ... illegal in non-prototype arg list
4705 3 32 bit addressing illegal
4907 4 6301 instruction illegal
5034 4 6801 instruction illegal
5193 4 68hc11 instruction illegal
5306 4 68hc11/6301 instruction illegal
5456 2 80186 instruction/addressing mode
5614 2 80286 instruction
5750 2 80386 instruction/addressing mode
5899 2 80486 instruction/addressing mode
6017 3 : expected
6174 2 ; expected
6312 1 = expected
6357 2 ] expected
6493 2 a parameter may not be a function
6658 1 absolute expression required
6732 3 add_reloc - bad size
6918 3 argument * conflicts with prototype
7091 2 argument -w* ignored
7232 3 argument list conflicts with prototype
7425 1 argument redeclared: *
7524 1 arguments redeclared
7652 3 arithmetic overflow in constant expression
7872 3 array dimension on *[] ignored
8063 3 array dimension redeclared
8310 2 array index out of bounds
8458 1 assertion
8561 1 assertion failed: *
8664 2 attempt to modify const object
8784 2 auto variable * should not be qualified
8969 3 bad #if ... defined() syntax
9161 1 bad '-p' format
9227 7 bad -a spec: *
9448 3 bad -m option: -m*
9618 2 bad -q option *
9763 3 bad arg (*) to tysize
9957 2 bad arg to *l
10072 1 bad arg to -b
10131 2 bad arg to e: *
10286 2 bad arg to extraspecial
10431 1 bad arg to im
10517 2 bad bconfloat - *
10664 2 bad bit address
10761 2 bad bit number
10842 1 bad bitfield type
10903 1 bad character const
10985 1 bad character in extended tekhex line *
11075 1 bad checksum specification
11167 1 bad combination of flags
11251 3 bad complex relocation
11400 2 bad confloat - *
11546 2 bad conval - *
11692 2 bad dimensions
11824 2 bad dp/nargs in openpar: dp = *
11917 3 bad element count expr
12090 3 bad float operand size
12227 2 bad gn
12386 4 bad high address in -a spec
12612 2 bad int. code
12716 4 bad load address in -a spec
12955 4 bad low address in -a spec
13190 2 bad mod '+' for how = *
13353 4 bad non-zero node in call graph
13599 3 bad object code format
13759 2 bad op * to revlog
13910 2 bad op * to swaplog
14051 2 bad op: *
14196 2 bad operand size
14294 3 bad operand to seg
14491 3 bad origin format in spec
14627 2 bad popreg
14771 1 bad popreg *
14865 2 bad pragma *
14967 2 bad psnext list
15108 2 bad pushreg
15254 1 bad pushreg: *
15348 2 bad putwsize
15497 2 bad record type *
15590 2 bad relocation type
15731 2 bad ret_mask
15881 2 bad segment fixups
15978 13 bad segspec *
16407 5 bad size in -s option
16639 2 bad size list
16773 6 bad storage class
17120 3 bad string '*' in psect pragma
17311 1 bad switch size *
17399 2 bad sx
17542 2 bad u usage
17693 2 bad variable syntax
17849 1 bad which (*) after i
17952 7 binary digit expected
18110 2 bit field too large (* bits)
18224 2 bug: illegal __ macro *
18338 4 can't allocate space for port variables: *
18582 1 can't be both far and near
18651 2 can't be long
18771 2 can't be register
18866 1 can't be short
18974 1 can't be unsigned
19069 5 can't call an interrupt function
19416 2 can't create *
19542 3 can't create cross reference file *
19743 2 can't create temp file
19743 2 can't create temp file *
19880 1 can't create xref file *
19964 2 can't enter abs psect
20132 3 can't find space for psect * in segment *
20326 3 can't generate code for this expression
20520 3 can't have 'port' variable: *
20777 2 can't have 'signed' and 'unsigned' together
20927 5 can't have array of functions
21255 2 can't have pointer to bit
21411 2 can't initialise auto aggregates
21546 2 can't initialize a basepage variable
21674 3 can't initialize arg
21894 4 can't mix proto and non-proto args
22156 1 can't open
22211 2 can't open *
22361 2 can't open * file *
22462 2 can't open avmap file *
22590 2 can't open command file *
22685 2 can't open file *
22814 3 can't open include file *
22972 1 can't reopen *
23081 3 can't take address of register variable
23275 2 can't take sizeof func
23387 3 can't take this address
23572 2 can't use a string in an #if
23662 2 cannot get memory
23768 1 cannot open
23825 1 cannot open *
23906 5 cannot open include file *
24183 3 cast type must be scalar or void
24366 2 char const too long
24481 5 close error (disk space?)
24798 4 closing quote expected
25083 2 common symbol psect conflict: *
25205 2 complex relocation not supported for -r or -l options yet
25342 3 conflicting fnconf records
25489 2 conflicting operand sizes
25600 6 constant conditional branch
26007 3 constant conditional branch: possible use of = instead of ==
26243 2 constant expression required
26366 2 constant left operand to ?
26525 2 constant operand to || or &&
26680 4 constant relational expression
26959 2 control line * within macro expansion
27123 4 declaration of * hides outer declaration
27381 3 declarator too complex
27595 2 default case redefined
27726 1 deff not supported in cp/m version
27815 9 degenerate signed comparison
28115 9 degenerate unsigned comparison
28342 4 digit out of range
28628 3 dimension required
28808 2 direct addressing required
28931 1 directive not recognized
29031 2 divide by zero in #if, zero result assumed
29143 1 division by zero
29251 3 double float argument required
29458 1 duplicate -d flag
29528 2 duplicate -d or -h flag
29613 3 duplicate -m flag
29777 2 duplicate base register
29899 1 duplicate case label
29995 1 duplicate case label *
30103 2 duplicate displacement in operand
30203 2 duplicate fnconf directive
30359 2 duplicate index register
30451 3 duplicate label *
30635 3 duplicate qualifier
30833 1 duplicate qualifier key *
30928 2 duplicate qualifier key * (*)
31083 2 duplicate qualifier name *
31239 1 duplicate qualifier*
31333 2 end of file within macro argument
31505 3 end statement inside include file or macro
31682 2 entry point multiply defined
31787 2 enum tag or { expected
31920 2 eof in #asm
32057 2 eof inside conditional
32165 2 eof inside macro def'n
32298 5 eof on string file
32618 6 error closing output file
32988 4 error in format string
33242 1 esp not permitted as index register
33303 2 expand - bad how
33453 2 expand - bad which
33608 4 expected '-' in -a spec
33733 2 exponent expected
33828 3 expression error
34014 2 expression generates no code
34154 3 expression stack overflow at op *
34333 2 expression syntax
34427 2 expression too complex
34591 11 external declaration inside function
35311 2 fail directive: *
35452 3 filename work buffer overflow
35652 4 fixup overflow referencing *
35895 6 fixup overflow referencing *
36224 1 flag * unknown
36324 6 float param coerced to double
36725 2 floating exponent too large
36870 2 floating number expected
36973 2 form length must be >= 15
37108 9 formal parameter expected after #
37509 4 function * appears in multiple call graphs: rooted at *
37750 3 function * is never called
37951 3 function body expected
38149 11 function declared implicit int
38850 2 function does not take arguments
38982 7 function is already 'extern'; can't be 'static'
39371 4 function or function pointer required
39660 3 function's local data too large
39834 2 functions can't return arrays
39961 5 functions can't return functions
40251 2 functions nested too deep
40359 2 garbage after operands
40494 2 garbage on end of line
40680 2 hc11 and h301 are incompatible
40814 2 hex digit expected
40918 2 ident records do not match
41064 2 identifier expected
41181 2 identifier redefined: *
41290 2 identifier redefined: * (from line *)
41419 7 illegal # command *
41750 2 illegal #if line
41891 2 illegal #undef argument
41988 2 illegal '#' directive
42120 5 illegal -o flag
42284 2 illegal -p flag
42398 1 illegal addressing mode
42460 3 illegal character (*)
42644 2 illegal character (0*)
42758 3 illegal character * in #if
42941 2 illegal conversion
43103 5 illegal conversion between pointer types
43475 5 illegal conversion of integer to pointer
43797 5 illegal conversion of pointer to integer
44093 1 illegal flag *
44151 5 illegal function qualifier(s)
44468 6 illegal indirect addressing
44636 2 illegal initialisation
44779 2 illegal or too many -p flags
44867 2 illegal record type
45045 2 illegal register for indirection
45164 3 illegal relocation size: *
45382 2 illegal relocation type: *
45546 2 illegal stack index
45641 1 illegal switch *
45720 2 illegal type for array dimension
45830 1 illegal type for index expression
45934 2 illegal type for switch expression
46067 3 illegal use of void expression
46239 2 image too big
46370 3 implicit conversion of float to integer
46604 5 implicit return at end of non-void function
46919 9 implict signed to unsigned conversion
47493 3 inappropriate 'else'
47677 4 inappropriate break/continue
47962 2 include files nested too deep
48165 6 incompatible intermediate code version; should be *
48632 4 incompatible intermediate code version; should be *.*
48918 2 incomplete * record body: length = *
49058 1 incomplete record
49129 3 incomplete record: *
49339 4 incomplete record: type = * length = *
49525 2 inconsistent storage class
49646 2 inconsistent type
49767 1 index offset too large
49878 1 indirection on illegal register
49947 2 initialisation syntax
50111 3 initializer in 'extern' declaration
50346 1 insufficient memory for macro def'n
50433 4 integer constant expected
50663 2 integer expression required
50818 2 integral argument required
50979 1 integral type required
51063 2 invalid disable: *
51149 2 invalid number syntax
51286 2 invalid operand size
51426 2 invalid short addressing
51545 2 invalid short addressing override
51670 2 jump out of range
51843 3 jump target out of range
52015 1 label identifier expected
52098 5 large stack offset for *
52425 1 lexical error
52529 4 line does not have a newline on the end
52788 4 line too long
53021 2 local illegal outside macros
53208 1 local psect '*' conflicts with global psect of same name
53291 2 logical type required
53447 2 long argument required
53603 2 macro * wasn't defined
53759 2 macro argument after % must be absolute
53946 2 macro argument may not appear after local
54086 2 macro expansions nested too deep
54229 2 macro name used as symbol
54365 3 macro work area overflow
54584 2 member * redefined
54708 4 members cannot be functions
54981 1 metaregister * can't be used directly
55085 5 mismatched comparision
55487 3 misplaced '?' or ':', previous operator is *
55651 3 misplaced constant in #if
55809 1 missing ')'
55892 3 missing '=' in class spec
55952 1 missing ']'
56030 1 missing arg to -a
56112 3 missing arg to -u
56192 2 missing arg to -w
56284 5 missing argument to 'pragma psect'
56521 4 missing basic type: int assumed
56734 2 missing key in avmap file
56871 2 missing memory key in avmap file
57010 8 missing name after pragma 'inline'
57288 4 missing name after pragma 'printf_check'
57478 2 missing number after % in -p option
57599 8 missing number after pragma 'pack'
57960 2 missing operand size
58055 2 missing size for align
58163 1 missing size for dc
58262 2 mixed 16 and 32 bit index registers
58408 2 mod by zero in #if, zero result assumed
58546 6 module has code below file base of *
58899 3 multi-byte constant * isn't portable
59059 1 multiple free: *
59166 1 multiply defined symbol *
59262 1 multiply defined symbol: *
59339 2 negative index offset
59428 3 nested comments
59601 2 no #asm before #endasm
59697 2 no arg to -o
59862 1 no case labels
59919 1 no case labels
59985 2 no end record
60088 2 no end record found
60217 1 no file argument
60281 2 no file arguments
60399 3 no identifier in declaration
60580 3 no memory for string buffer
60814 2 no psect specified for function variable/argument allocation
60970 1 no space for macro def'n
61054 4 no start record: entry point defaults to zero
61339 2 no. of arguments redeclared
61472 2 nodecount = *
61627 2 non-constant case label
61742 3 non-prototyped function declaration: *
61978 3 non-scalar types can't be converted
62172 2 non-void function returns no value
62320 2 not a member of the struct/union *
62438 2 not a variable identifier: *
62544 3 not an argument: *
62730 3 object code version is greater than *
62917 3 object file is not absolute
63128 1 one segment override only permitted
63229 2 only functions may be qualified interrupt
63333 1 only functions may be void
63439 6 only lvalues may be assigned to or modified
63865 2 only register storage class allowed
63972 1 oops! -ve number of nops required!
64035 2 operand error
64189 3 operand size undefined
64380 4 operands of * not same pointer type
64617 4 operands of * not same type
64853 3 operator * in incorrect context
65012 1 option not supported
65074 3 out of far memory
65304 2 out of far memory (wanted * bytes)
65421 5 out of memory
65722 3 out of near memory
65941 2 out of space in macro * arg expansion
66088 3 output file cannot be also an input file
66298 2 page width must be >= 41
66436 3 phase error
66619 2 phase error in macro args
66757 2 phase error on temporary label
66881 2 pointer required
67027 2 pointer to * argument required
67201 3 pointer to non-static object returned
67427 1 pop immediate illegal
67495 2 pop of allreg!!
67644 2 pop of register *
67797 2 popreg - bad reg *(*)
67945 2 popreg - bad reg
68132 2 popreg - trying to pop * with 0* regbits - can't do it!
68299 2 portion of expression has no effect
68419 5 possible pointer truncation
68724 2 preprocessor assertion failure
68872 5 probable missing '}' in previous block
69179 2 psect '*' re-orged
69282 3 psect * cannot be in classes *
69468 1 psect * in more than one group
69560 4 psect * not loaded on * boundary
69785 3 psect * not relocated on * boundary
69954 3 psect * not specified in -p option
70122 2 psect * re-orged
70219 1 psect * selector value redefined
70313 3 psect * type redefined: *
70541 1 psect exceeds max size: *
70620 2 psect is absolute: *
70735 2 psect may not be local and global
70865 1 psect origin multiply defined: *
70943 2 psect property redefined
71041 2 psect reloc redefined
71152 2 psect selector redefined
71266 2 psect size redefined
71367 2 push of allreg!!
71517 2 push of register *
71666 2 pushreg - bad reg
71820 2 pushreg - bad reg *(*)
72009 2 pushreg - trying to push * with 0* regbits - can't do it!
72165 2 radix value out of range
72266 1 read error on *
72341 2 record too long
72433 2 record too long: *
72582 5 recursive function calls:
72861 2 recursive macro definition of *
72989 3 redefining macro *
73208 3 redundant & applied to array
73379 2 reginit!!!???
73533 2 regused - bad arg to g
73681 4 relocation error
74003 3 relocation offset * out of range 0..*
74195 2 relocation too complex
74299 1 remsym error
74378 1 rept argument must be >= 0
74471 1 restore without matching save
74562 2 revlog - bad op
74715 2 save/restore too deep
74811 2 scale value invalid
74915 1 scale value must be a constant
74990 1 seek error: *
75075 2 segment * overlaps segment *
75208 5 signatures do not match: *
75536 2 signed bitfields not supported
75697 2 simple integer expression required
75845 1 simple type required for *
75947 2 size error
76105 7 sizeof yields 0
76541 2 storage class illegal
76700 4 storage class redeclared
76938 4 strange character * after ##
77191 1 strange character after # *
77250 2 string expected
77343 1 string too long
77410 2 struct/union member expected
77511 1 struct/union redefined: *
77588 1 struct/union required
77686 2 struct/union tag or '{' expected
77832 2 structure too big for function return
77977 3 symbol * cannot be global
78201 3 symbol * has erroneous psect: *
78408 2 symbol * is not external
78581 3 symbol * not defined in #undef
78761 1 syntax error
78861 4 syntax error in -a spec
78977 3 syntax error in checksum list
79191 1 text does not start at 0
79269 1 text offset too low
79346 3 text record has bad length: *
79527 2 text record has length too small: *
79661 3 this function too large - try reducing level of optimization
79850 2 this is a struct
80007 2 this is a union
80160 2 this is an enum
80326 2 too few arguments
80433 2 too few arguments for format string
80598 3 too many (*) enumeration constants
80775 2 too many (*) structure members
80919 1 too many arguments
81024 2 too many arguments for format string
81171 1 too many arguments for macro
81276 2 too many arguments in macro expansion
81398 2 too many cases in switch
81572 4 too many comment lines - discarding
81852 2 too many errors
82019 2 too many include directories
82136 2 too many initializers
82297 1 too many macro parameters
82390 2 too many nested #* statements
82490 1 too many psect class specifications
82573 1 too many psect pragmas
82641 1 too many psects
82715 1 too many qualifier names
82788 2 too many relocation items
82879 1 too many segment fixups
82970 1 too many segments
83054 3 too many symbols
83276 2 too many temporary labels
83410 2 too may symbols
83538 1 too much indirection
83619 2 too much pushback
83717 1 type conflict
83791 3 type redeclared
84020 2 type specifier reqd. for proto arg
84154 2 unbalanced paren's, op is *
84293 1 undefined enum tag: *
84354 2 undefined identifier: *
84481 2 undefined label: *
84598 2 undefined operand size
84738 2 undefined public symbol *
84862 4 undefined shift (* bits)
85189 1 undefined struct/union
85278 2 undefined struct/union: *
85369 1 undefined symbol *
85474 3 undefined symbol * in #if, 0 used
85631 2 undefined symbol:
85778 1 undefined symbols:
85865 2 undefined temporary label
86000 1 undefined variable: *
86082 2 unexpected end of file
86199 1 unexpected eof
86300 10 unexpected text in #control line ignored
86605 2 unknown predicate *
86760 1 unknown addressing mode
86836 1 unknown arg to opt
86904 2 unknown arg type to lpsize
87062 2 unknown complex operator *
87225 1 unknown directive
87293 2 unknown fnrec type *
87383 1 unknown option *
87452 1 unknown pragma *
87514 2 unknown psect: *
87645 2 unknown qualifier '*' given to -a
87817 2 unknown record type: *
87940 2 unknown symbol type *
88058 3 unreachable code
88283 2 unreasonable matching depth
88443 1 unrecognized argument to opt
88513 2 unrecognized option to -o: *
88615 2 unrecognized option to -z: *
88796 9 unrecognized qualifer name after 'strings'
89148 3 unterminated #if[n][def] block from line *
89296 2 unterminated macro arg
89427 1 unterminated string
89525 2 unterminated string in macro body
89610 1 unused constant: *
89696 1 unused enum: *
89779 1 unused label: *
89853 1 unused member: *
89941 1 unused structure: *
90024 1 unused typedef: *
90099 1 unused union: *
90192 1 unused variable declaration: *
90282 1 unused variable definition: *
90377 2 variable may be used before set: *
90551 2 void function cannot return value
90670 1 while expected
90758 2 work buffer overflow *
90881 2 write error (out of disk space?) *
90954 2 write error on *
91075 2 write error on object file
91264 1 wrong number of macro arguments for * - * instead of *
91337 1 { expected
91385 1 } expected
%#define syntax error
A macro definition has a syntax error. This could be due
to a macro or formal parameter name that does not start
with a letter or a missing closing parenthesis (')').
%#elif may not follow #else
If a #else has been used after #if, you cannot then use
a #elif in the same conditional block.
%#elif must be in an #if
#elif must be preceded by a matching #if line. If there
is an apparently corresponding #if line, check for things
like extra #endif's, or improperly terminated comments.
%#else may not follow #else
There can be only one #else corresponding to each #if.
%#else must be in an #if
#else can only be used after a matching #if.
%#error: *
This is a programmer generated error; there is a directive
causing a deliberate error. This is normally used to check
compile time defines etc.
%#if ... sizeof() syntax error
The preprocessor found a syntax error in the argument to sizeof,
in a #if expression. Probable causes are mismatched parentheses
and similar things.
%#if ... sizeof: bug, unknown type code *
The preprocessor has made an internal error in evaluating
a sizeof() expression. Check for a malformed type specifier.
%#if ... sizeof: illegal type combination
The preprocessor found an illegal type combination in
the argument to sizeof() in a #if expression. Illegal
combinations include such things as "short long int".
%#if bug, operand = *
The preprocessor has tried to evaluate an expression with
an operator it does not understand. This is an internal error.
%#if sizeof() error, no type specified
Sizeof() was used in a preprocessor #if expression, but no
type was specified. The argument to sizeof() in a preprocessor
expression must be a valid simple type, or pointer to a simple type.
%#if sizeof, unknown type *
An unknown type was used in a preprocessor sizeof(). The
preprocessor can only evaluate sizeof() with basic types, or
pointers to basic types.
%#if value stack overflow
The preprocessor filled up its expression evaluation stack
in a #if expression. Simplify the expression - it probably contains
too many parenthesized subexpressions.
%#if, #ifdef, or #ifndef without an argument
The preprocessor directives #if, #ifdef and #ifndef must
have an argument. The argument to #if should be an expression,
while the argument to #ifdef or #ifndef should be a single name.
%#include syntax error
The syntax of the filename argument to #include is invalid. The
argument to #include must be a valid file name, either enclosed in
double quotes ("") or angle brackets (<>). For example:
#include "afile.h"
#include <otherfile.h>
Spaces should not be included, and the closing quote or bracket must be present. There
should be nothing else on the line.
%'.' expected after '..'
The only context in which two successive dots may appear is as part of the
ellipsis symbol, which must have 3 dots.
%'.' not followed by 'w' or 'b'
A dot (.) introduces an operand size specifier, so it must be followed
by an appropriate specifier. .W is for words, .B for bytes.
%'=' expected after lle
The LLE option requires an equal sign, then the desired listing line length
as a decimal number, e.g.
opt lle=80
%'=' expected after p
The P option specifies a page length, and must have an equal sign and a
decimal number, e.g.
opt p=66
%'case' not in switch
A case statement has been encountered but there is no enclosing switch
statement. A case statement may only appear inside the body of a
switch statement.
%'default' not in switch
A label has been encountered called "default" but it is not
enclosed by a switch statement. The label "default" is only legal
inside the body of a switch
statement.
%( expected
An opening parenthesis was expected here. This must be the first token
after a while, for, if, do or asm keyword.
%) expected
A closing parenthesis was expected here. This may indicate you have
left out a parenthesis in an expression, or you have some other
syntax error.
%, expected
A comma was expected here. This probably means you have left out the comma
between two identifiers in a declaration list. It may also mean that
the immediately preceding type name is misspelled, and has thus been
interpreted as an identifier.
%-s, too few values specified in *
The list of values to the preprocessor -S option is incomplete.
This should not happen if the preprocessor is being invoked by the
compiler driver or HPD.
%-s, too many values, * unused
There were too many values supplied to a -S preprocessor option.
%... illegal in non-prototype arg list
The ellipsis symbol may only appear as the last item in a prototyped
argument list. It may not appear on its own, nor may it appear after
argument names that do not have types.
%32 bit addressing illegal
32 bit addressing (i.e. using 32 bit registers in an index expression)
is illegal unless generating 386 or 486 code. Use a .386 or .486
directive at the beginning of the file.
%6301 instruction illegal
This instruction is for the 6301 and is illegal unless an appropriate
option is used, e.g.
opt h301
%6801 instruction illegal
The 6801 instructions can only be used if an appropriate
option is used, to allow 6801, 68HC11 or 6301 instructions. E.g.
opt z01
%68hc11 instruction illegal
68HC11 instructions can only be used if the HC11 option is
used, e.g.
opt HC11
%68hc11/6301 instruction illegal
This instruction is only implemented in the 68HC11 and 6301
processors. Use an HC11 or H301 option, e.g.
opt HC11
%80186 instruction/addressing mode
An instruction or addressing mode not supported by the 8088/8086 was
encountered. Use a .186, .286. .386 or .486 directive to allow these.
%80286 instruction
An instruction peculiar to the 80286
encountered. Use a .286. .386 or .486 directive to allow these.
%80386 instruction/addressing mode
An instruction or addressing mode peculiar to the 80386
encountered. Use a .386 or .486 directive to allow these.
%80486 instruction/addressing mode
An instruction or addressing mode peculiar to the 80486
encountered. Use a .486 directive to allow these.
%: expected
A colon is missing in a case label, or after the keyword "default".
This often occurs when a semicolon is accidentally typed instead of
a colon.
%; expected
A semicolon is missing here. The semicolon is used as a terminator in
many kinds of statements, e.g. do .. while, return etc.
%= expected
An equal sign was expected here.
%] expected
A closing square bracket was expected in an array declaration or
an expression using an array index.
%a parameter may not be a function
A function parameter may not be a function. It may be a pointer to
a function, so perhaps a "*" has been omitted from the declaration.
%absolute expression required
An absolute expression is required in this context.
%add_reloc - bad size
This is an internal error that should never happen. The assembler may
be corrupted, and should be re-installed from the original distribution
disks.
%argument * conflicts with prototype
The argument specified (argument 1 is the left most argument) of this
function declaration does not agree with a previous prototype for this
function.
%argument -w* ignored
The -W argument should not have a negative argument less than
-9. Warning levels range from -9 to 9.
%argument list conflicts with prototype
The argument list in a function definition is not the same as a previous
prototype for that function. Check that the number and types of the
arguments are all the same.
%argument redeclared: *
The specified argument is declared more than once in the same argument list.
%arguments redeclared
The arguments of the function have been declared differently in two or more places.
%arithmetic overflow in constant expression
A constant expression has been evaluated by the code generator
that has resulted in a value that is too big for the type of
the expression, e.g. trying to store the value 256 in a "char".
%array dimension on *[] ignored
An array dimension on a function parameter is ignored, because the argument is
actually converted to a pointer when passed. Thus arrays of any size may
be passed.
%array dimension redeclared
An array dimension has been declared as a different non-zero value from
its previous declaration. It is acceptable to redeclare the size of an
array that was previously declared with a zero dimension, but not otherwise.
%array index out of bounds
An array is being indexed with a constant value that is less than zero, or greater
than or equal to the number of elements in the array.
%assertion
An internal error has occured in the compiler. Contact HI-TECH technical support.
%assertion failed: *
This is an internal error. Contact HI-TECH Software technical support.
%attempt to modify const object
Objects declared "const" may not be assigned to or modified in any
other way..
%auto variable * should not be qualified
An auto variable should not have qualifiers such as "near" or "far" associated
with it. Its storage class is implicitly defined by the stack organization.
%bad #if ... defined() syntax
The defined() pseudo-function in a preprocessor expression
requires its argument to be a single name. The name must start with
a letter. It should be enclosed in parentheses.
%bad '-p' format
The "-P" option given to the linker is malformed.
%bad -a spec: *
The format of a -A specification, giving address ranges to the linker,
is invalid. The correct format is:
-Aclass=low-high
where class is the name of a psect class, and low and high are hex
numbers.
%bad -m option: -m*
The code generator has been passed a -M option that it does not
understand. This should not happen if it is being invoked by a
standard compiler driver.
%bad -q option *
The first pass of the compiler has been invoked with a -Q option,
to specify a type qualifier name, that is badly formed.
%bad arg (*) to tysize
This is an internal error that should not happen. If this occurs, re-install
the compiler from the original distribution disks, as it could represent
a corrupted executable file.
%bad arg to *l
The *L directive should be followed by either ON or OFF.
This turns listing on or off respectively.
%bad arg to -b
The argument supplied to "-B" is invalid.
%bad arg to e: *
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad arg to extraspecial
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad arg to im
The opcode "IM" only takes the constants 0, 1 or 2 as an argument.
%bad bconfloat - *
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad bit address
This bit address is invalid. Bit addresses for the 8051
may range from 0 to 255.
%bad bit number
A bit number must be an absolute expression in the range
0-7.
%bad bitfield type
A bitfield may only have a type of int.
%bad character const
This character constant is badly formed.
%bad character in extended tekhex line *
This is an internal error in objtohex and should never occur.
%bad checksum specification
A checksum list supplied to the linker is syntatically incorrect.
%bad combination of flags
The combination of options supplied to objtohex is invalid.
%bad complex relocation
The linker has been asked to perform complex relocation
that is not syntactically correct. Probably means a corrupted
object file.
%bad confloat - *
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad conval - *
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad dimensions
The code generator has been passed a declaration that
results in an array having a zero dimension.
%bad dp/nargs in openpar: dp = *
This is an internal error in the preprocessor. It should
not happen.
%bad element count expr
There is an error in the intermediate code. Try re-installing the
compiler from the distribution disks, as this could be caused by a
corrupted file.
%bad float operand size
The operand size for a DF pseudo-op must be either .L for
long (4 byte) floating point values, or .D for double (8 byte)
floats.
%bad gn
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad high address in -a spec
The high address given in a -A specification is invalid: it
should be a valid number, in decimal, octal or hexadecimal radix.
The radix is specified by a trailing O (for octal) or H for
hex. Decimal is default.
%bad int. code
The code generator has been passed input that is not syntatically
correct.
%bad load address in -a spec
The load address given in a -A specification is invalid: it
should be a valid number, in decimal, octal or hexadecimal radix.
The radix is specified by a trailing O (for octal) or H for
hex. Decimal is default.
%bad low address in -a spec
The low address given in a -A specification is invalid: it
should be a valid number, in decimal, octal or hexadecimal radix.
The radix is specified by a trailing O (for octal) or H for
hex. Decimal is default.
%bad mod '+' for how = *
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad non-zero node in call graph
The linker has encountered a top level node in the call graph
that is referenced from lower down in the call graph. This
probably means the program has indirect recursion, which is
not allowed when using a compiled stack.
%bad object code format
The object code format of this object file is invalid. This probably
means it is either truncated, corrupted, or not a HI-TECH object
file.
%bad op * to revlog
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad op * to swaplog
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad op: *
This is caused by an error in the intermediate code file. You may
have run out of disk (or RAMdisk) space for temporary files.
%bad operand size
This instruction requires an operand size of byte. Any other
size is illegal.
%bad operand to seg
The seg operator requires an argument which refers either to a symbol
or a psect. Its operand may not be an unevaluated expression, e.g.
the sum of two external symbols.
%bad origin format in spec
The origin format in a -p option is not a validly formed
decimal, octal or hex number. A hex number must have a
trailing H.
%bad popreg
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad popreg *
This is an internal compiler error. Contact HI-TECH Software technical support.
%bad pragma *
The code generator has been passed a "pragma" directive that it
does not understand.
%bad psnext list
This is an internal assembler error. Contact HI-TECH technical
support with full details of the code that caused this error.is
%bad pushreg
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad pushreg: *
This is an internal compiler error. Contact HI-TECH Software technical support.
%bad putwsize
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad record type *
This indicates that the object file is not a valid
HI-TECH object file.
%bad relocation type
This is an internal assembler error. Contact HI-TECH technical
support with full details of the code that caused this error.is
%bad ret_mask
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad segment fixups
This is an obscure message from objtohex that is not
likely to occur in practice.
%bad segspec *
The segspec option (-G) to the linker is invalid. The correct
form of a segspec option is along the following lines:
-Gnxc+o
where n stands for the segment number, x is a multiplier
symbol, c is a constant (multiplier) and o is a constant
offset. For example the option
-Gnx4+16
would assign segment selectors starting from 16, and incrementing
by 4 for each segment, i.e. in the order 16, 20, 24 etc.
%bad size in -s option
The size part of a -S option is not a validly
formed number. The number must be a decimal, octal
or hex number. A hex number needs a trailing H, and
an octal number a trailing O. All others are assumed
to be decimal.
%bad size list
The first pass of the compiler has been invoked with a -Z option,
specifying sizes of types, that is badly formed.
%bad storage class
The storage class "auto" may only be used inside a function. A function
parameter may not have any storage class specifier other than
"register".
If this error is issued by the code generator, it could mean that
the intermediate code file is invalid. This could be caused
by running out of disk (or RAMdisk) space.
%bad string '*' in psect pragma
The code generator has been passed a "pragma psect" directive
that has a badly formed string. "Pragma psect" should be followed
by something of the form "oldname=newname".
%bad switch size *
This is an internal compiler error. Contact HI-TECH Software technical support.
%bad sx
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad u usage
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%bad variable syntax
There is an error in the intermediate code file. This could be caused by
running out of disk (or RAMdisk) space for temporary files.
%bad which (*) after i
This is an internal compiler error. Contact HI-TECH Software technical support.
%binary digit expected
A binary digit was expected. The format for a binary number is
0Bxxx
where xxx is a string of zeroes and ones, e.g.
0B0110
%bit field too large (* bits)
The maximum number of bits in a bit field is the same as the
number of bits in an "int".
%bug: illegal __ macro *
This is an internal error in the preprocessor that
should not happen.
%can't allocate space for port variables: *
"Port" variables may only be declared "extern" or have an
absolute address associated via the "@ address" construct. They
may not be declared in such a way that would require the compiler
to allocate space for them.
%can't be both far and near
It is illegal to qualify a type as both far and near.
%can't be long
Only "int" and "float" can be qualified with "long". Thus combinations
like "long char" are illegal.
%can't be register
Only function parameters or auto (local) variables may be declared
"register".
%can't be short
Only "int" can be modified with short. Thus combinations like "short float" are illegal.
%can't be unsigned
There is no such thing as an unsigned floating point number.
%can't call an interrupt function
A function qualified "interrupt" can't be called from other functions.
It can only be called by a hardware (or software) interrupt. This is
because an interrupt function has special function entry and exit code
that is appropriate only for calling from an interrupt. An
"interrupt" function can call other non-interrupt functions.
%can't create *
The named file could not be created. Check that all directories in the
path are present.
%can't create cross reference file *
The cross reference file could not be created. Check that
all directories are present. This can also be caused by the
assembler running out of memory.
%can't create temp file
%can't create temp file *
The compiler could not create the temporary file named. Check that all the
directories in the file path exist.
%can't create xref file *
An output file for the cross reference could not be created.
%can't enter abs psect
This is an internal assembler error. Contact HI-TECH technical
support with full details of the code that caused this error.
%can't find space for psect * in segment *
The named psect cannot be placed in the specified segment.
This probably means your code has got too big for the
specified ROM space (using -A options).
%can't generate code for this expression
This expression is too difficult for the code generator to handle.
Try simplifying the expression, e.g. using a temporary variable
to hold an intermediate result.
%can't have 'port' variable: *
The qualifier "port" can be used only with pointers or absolute variables.
You cannot define a port variable as the compiler does not allocate space
for port variables. You can declare an external port variable.
%can't have 'signed' and 'unsigned' together
The type modifiers signed and unsigned cannot be used together
in the same declaration, as they have opposite meaning.
%can't have array of functions
You can't have an array of functions. You can however have an array
of pointers to functions. The correct syntax for an array of pointers
to functions is "int (* arrayname[])();". Note that parentheses are
used to associate the star (*) with the array name before the
parentheses denoting a function.
%can't have pointer to bit
Bit variables as implemented in the 8051 compiler are not addressable
via pointers, so a pointer to a bit is not allowed.
%can't initialise auto aggregates
You can't initialise structures or arrays local to a function unless
they are declared "static".
%can't initialize a basepage variable
A basepage variable can't be initialized, as the basepage is RAM and is
not initialized at program start.
%can't initialize arg
A function argument can't have an initialiser. The initialisation of
the argument happens when the function is called and a value is
provided for the argument by the calling function.
%can't mix proto and non-proto args
A function declaration can only have all prototyped arguments (i.e.
with types inside the parentheses) or all K&R style args (i.e. only
names inside the parentheses and the argument types in a declaration
list before the start of the function body).
%can't open
A file can't be opened - check spelling.
%can't open *
The named file could not be opened. Check the spelling and the
directory path. This can also be caused by running out of memory.
%can't open * file *
The assembler could not open an include or source file. Check the
spelling.
%can't open avmap file *
A file required for producing Avocet format symbol files
is missing. Try re-installing the compiler.
%can't open command file *
The command file specified could not be opened
for reading. Check spelling!
%can't open file *
The named file could not be opened. Check spelling. This can
also be caused by running out of memory.
%can't open include file *
The named include file could not be opened. Check spelling.
This can also be caused by running out of memory, or running
out of file handles.
%can't reopen *
The compiler could not reopen a temporary file it had just created.
%can't take address of register variable
A variable declared "register" may not have storage allocated for it
in memory, and thus it is illegal to attempt to take the address of
it by applying the "&" operator.
%can't take sizeof func
Functions don't have sizes, so you can't take use the "sizeof"
operator on a function.
%can't take this address
The expression which was the object of the "&" operator is not one
that denotes memory storage ("an lvalue") and therefore its address
can not be defined.
%can't use a string in an #if
The preprocessor does not allow the use of strings in #if
expressions.
%cannot get memory
The linker is out of memory! This is unlikely
to happen, but removing TSR's etc is the cure.
%cannot open
A file cannot be opened - check spelling.
%cannot open *
The file specified cannot be opened. Check spelling.
%cannot open include file *
The named include file could not be opened for
reading by the preprocessor. Check the spelling of the
filename. If it is a standard header file, not in the
current directory, then the name should be enclosed in
angle brackets (<>) not quotes.
%cast type must be scalar or void
A typecast (an abstract type declarator enclosed in parentheses)
must denote a type which is either scalar (i.e. not an array or a
structure) or the type "void".
%char const too long
A character constant enclosed in single quotes may not contain more
than one character.
%close error (disk space?)
When the compiler closed a temporary file, an error was reported.
The most likely cause of this is that there was insufficient space
on disk for the file. Note that temporary files may be created on a
RAM disk, so even if your hard disk has ample space it is still
possible to get this error.
%closing quote expected
A newline (end of line) was encountered before a matching closing
quote was seen. This could be caused by the closing quote having
been omitted, or by an extra quote character being inserted in the
string without an escape character (\\) preceding it.
%common symbol psect conflict: *
A common symbol has been defined to be in more than
one psect.
%complex relocation not supported for -r or -l options yet
The linker was given a -R or -L option with file that
contain complex relocation. This is not yet supported.
%conflicting fnconf records
This is probably caused by multiple run-time startoff
module. Check the linker arguments, or "Object Files..." in HPD.
%conflicting operand sizes
This instruction has more than one operand size specified.
They are incompatible.
%constant conditional branch
A conditional branch (generated by an "if" statement etc.)
always follows the same path. This may indicate an expression
with missing or badly placed parentheses, causing the evaluation
to yield a value different to what you expected, or it may be
because you have written something like "while(1)". To produce
an infinite loop, use "for(;;)".
%constant conditional branch: possible use of = instead of ==
There is an expression inside an if or other conditional construct, where
a constant is being assigned to a variable. This may mean you have inadvertentley
used an assignment (=) instead of a compare (==).
%constant expression required
In this context an expression is required that can be evaluated to a
constant at compile time.
%constant left operand to ?
The left operand to a conditional operator (?) is constant, thus the result of
the tertiary operator ?: will always be the same.
%constant operand to || or &&
One operand to the logical operators || or && is a constant. Check
the expression for missing or badly placed parentheses.
%constant relational expression
There is a relational expression that will always be true or false. This may be
because e.g. you are comparing an unsigned number with a negative value, or
comparing a variable with a value greater than the largest number it can
represent.
%control line * within macro expansion
A preprocessor control line (one starting with a #) has been
encountered while expanding a macro. This should not happen.
%declaration of * hides outer declaration
An object has been declared that has the same name as an outer
declaration (i.e. one outside and preceding the current function or
block). This is legal, but can lead to accidental use of one variable
when the outer one was intended.
%declarator too complex
This declarator is too complex for the compiler to handle. Examine
the declaration and find a way to simplify it. If the compiler finds
it too complex, so will anybody maintaining the code.
%default case redefined
There is only allowed to be one "default" label in a switch
statement. You have more than one.
%deff not supported in cp/m version
The CP/M hosted assembler does not support floating point.
%degenerate signed comparison
There is a comparision of a signed value with the most negative value possible
for this type, such that the comparision will always be true or false. E.g.
char c;
if(c >= -128)
will always be true, because an 8 bit signed char has a maximum negative value
of -128.
%degenerate unsigned comparison
There is a comparision of an unsigned value with zero, which will always be
true or false. E.g.
unsigned char c;
if(c >= 0)
will always be true, because an unsigned value can never be less than zero.
%digit out of range
A digit in this number is out of range of the radix for the number,
e.g. using the digit 8 in an octal number, or hex digits A-F in a
decimal number. An octal number is denoted by the digit string
commencing with a zero, while a hex number starts with "0X" or "0x".
%dimension required
Only the most significant (i.e. the first) dimension in a
multi-dimension array may not be assigned a value. All succeeding
dimensions must be present.
%direct addressing required
Direct or indexed addressing is required for bit operations.
Extended addressing cannot be used.
%directive not recognized
An assembler directive is unrecognized. Check spelling.
%divide by zero in #if, zero result assumed
Inside a #if expression, there is a division by
zero which has been treated as yielding zero.
%division by zero
A constant expression that was being evaluated involved a division by zero.
%double float argument required
The printf format specifier corresponding to this argument is %f or similar,
and requires a floating point expression. Check for missing or extra
format specifiers or arguments to printf.
%duplicate -d flag
Only one -d flag can be given to the linker.
%duplicate -d or -h flag
The linker will accept only one -d or -h option
with a file name.
%duplicate -m flag
The linker only likes to see one -m flag, unless one
of them does not specify a file name. Two map file names
are more than it can handle!
%duplicate base register
Only one base register, i.e. only one of BP and BX may
be used in a 16 bit indexed addressing form.
%duplicate case label
There are two case labels with the same value in this switch statement.
%duplicate case label *
There is more than one case label with this value in a switch statement.
%duplicate displacement in operand
The operand on this instruction has two offsets. Only one
is permitted.
%duplicate fnconf directive
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%duplicate index register
Only one index register (SI or DI) may be used in a 16 bit
indexed form.
%duplicate label *
The same name is used for a label more than once in this function.
Note that the scope of labels is the entire function, not just the
block that encloses a label.
%duplicate qualifier
There are two occurences of the same qualifier in this type specification.
This can occur either directly or through the use of a typedef. Remove
the redundant qualifier.
%duplicate qualifier key *
This qualifier key (given via a -Q option, has been used twice.
%duplicate qualifier key * (*)
P1 has been given a duplicate qualifer key by the compiler driver. This
should not occur if the standard driver is being used.
%duplicate qualifier name *
A duplicate qualifier name has been specified to P1 via a -Q option. This
should not occur if the standard compiler drivers are used.
%duplicate qualifier*
There are two qualifiers with the same name or key letter.
%end of file within macro argument
A macro argument has not been terminated. This probably means the closing
parenthesis has been omitted from a macro invocation.
%end statement inside include file or macro
An end statement has been encountered inside an include file
or macro. There should be one end statement only, at the end
of the main source file.
%entry point multiply defined
There is more than one entry point defined in the object
files given the linker.
%enum tag or { expected
After the keyword "enum" must come either an identifier that is or
will be defined as an enum tag, or an opening brace.
%eof in #asm
An end of file has been encountered inside a #asm block. This
probably means the #endasm is missing or misspelt.
%eof inside conditional
END-of-FILE was encountered while scanning for an "endif"
to match a previous "if".
%eof inside macro def'n
End-of-file was encountered while processing a macro definition.
This means there is a missing "endm" directive.
%eof on string file
P1 has encountered an unexpected end-of-file while re-reading its file
used to store constant strings before sorting and merging. This is most
probably due to running out of disk space. Check free disk space, OR
RAM disk size. The RAM disk may be too small, if it is used for
temporary files.
%error closing output file
The compiler detected an error when closing a file. This most
probably means there is insufficient disk space, but note that the
file could be on a RAM disk, so even if you have ample space on your
hard disk, this error can still occur. If this is the case, increase
the size of your ram disk or move your temporary file area onto
the hard disk.
%error in format string
There is an error in the format string here. The string has been
interpreted as a printf() style format string, and it is not
syntactically correct. If not corrected, this will cause unexpected
behaviour at run time.
%esp not permitted as index register
ESP is not permitted as an index register.
%expand - bad how
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%expand - bad which
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%expected '-' in -a spec
There should be a minus sign (-) between the high and
low addresses in a -A spec, e.g.
-AROM=1000h-1FFFh
%exponent expected
A floating point constant must have at least one digit after the "e"
or "E".
%expression error
There is a syntax error in this expression, OR
there is an error in the intermediate code file. This could be
caused by running of disk (or RAMdisk) space.
%expression generates no code
This expression generates no code. Check for things like leaving
off the parentheses in a function call.
%expression stack overflow at op *
Expressions in #if lines are evaluated using a stack with a size
of 128. It is possible for very complex expressions to overflow
this. Simplify the expression.
%expression syntax
This expression is badly formed and cannot be parsed by the
compiler.
%expression too complex
This expression has caused overflow of the compiler's internal stack
and should be re-arranged or split into two expressions.
%external declaration inside function
A function contains an "extern" declaration. This is legal but is
invariably A Bad Thing as it restricts the scope of the function
declaration to the function body. This means that if the compiler
encounters another declaration, use or definition of the extern
object later in the same file, it will no longer have the earlier
declaration and thus will be unable to check that the declarations
are consistent. This can lead to strange behaviour of your program
or signature errors at link time. It will also hide any previous
declarations of the same thing, again subverting the compiler's type
checking. As a general rule, always declare "extern" variables and
functions outside any other functions.
%fail directive: *
A programmer generated FAIL directive has been assembled. This
normally is used as a configuration safeguard.
%filename work buffer overflow
A filename constructed while looking for an include
file has exceeded the length of an internal buffer. Since
this buffer is 4096 bytes long, this is unlikely to happen.
%fixup overflow referencing *
The linker was asked to relocate (fixup) an item that would
not fit back into the space after relocation. For example this
will occur if a byte size object is initialized with an address
that is bigger than 255.
%fixup overflow referencing *
An attempt was made to fixup (relocate) an address, but
the resultant value was too large to fit in the space
allowed. This is probably caused by some user-written
assembler, or by incorrect addresses at link time, or
by code exceeding the maximum size (e.g. > 64K code
on a processor with a 16 bit address bus).
%flag * unknown
This option used on a "PSECT" directive is unknown to the assembler.
%float param coerced to double
Where a non-prototyped function has a parameter declared as "float",
the compiler convert this into a "double float". This is because the
default C type conversion conventions provide that when a floating
point number is passed to a non-prototyped function, it will be
converted to double. It is important that the function declaration
be consistent with this convention.
%floating exponent too large
The exponent of the floating point number is too large. For the Z80 the
largest floating point exponent is decimal 19.
%floating number expected
The arguments to the "DEFF" pseudo-op must be valid floating point
numbers.
%form length must be >= 15
The length of the listing page must be at least
15 lines. You can't get a decent listing otherwise!
%formal parameter expected after #
The stringization operator # (not to be confused with the leading #
used for preprocessor control lines) must be followed by a formal
macro parameter. If you need to stringize a token, you will need to
define a special macro to do it, e.g.
#define __mkstr__(x) #x
then use __mkstr__(token) wherever you need to convert a token
into a string.
%function * appears in multiple call graphs: rooted at *
This function can be called from both main line code and
interrupt code. Use the reentrant keyword, if this compiler
supports it, or recode to avoid using local variables
or parameters, or duplicate the function.
%function * is never called
This function is never called. This may not represent a problem,
but space could be saved by removing it. If you believe this function
should be called, check your source code.
%function body expected
Where a function declaration is encountered with K&R style arguments
(i.e. argument names but no types inside the parentheses) a function
body is expected to follow.
%function declared implicit int
Where the compiler encounters a function call of a function whose
name is presently undefined, the compiler will automatically declare
the function to be of type "int", with unspecified (K&R style)
parameters. If a definition of the function is subsequently
encountered, it is possible that its type and arguments will be
different from the earlier implicit declaration, causing a compiler
error. The solution is to ensure that all functions are defined or
at least declared before use, preferably with prototyped parameters.
If it is necessary to make a forward declaration of a function, it
should be preceded with the keywords "extern" or "static" as
appropriate.
%function does not take arguments
This function has no parameters, but it is called here with
one or more arguments.
%function is already 'extern'; can't be 'static'
This function was already declared extern, possibly through an implicit
declaration. It has now been redeclared static, but this redeclaration is
invalid. If the problem has arisen because of use before definition, either
move the definition earlier in the file, or place a static forward definition
earlier in the file, e.g.
static int fred(void);
%function or function pointer required
Only a function or function pointer can be the subject of a function
call. This error can be produced when an expression has a syntax
error resulting in a variable or expression being followed by an
opening parenthesis ("(") which denotes a function call.
%function's local data too large
The size of the stack frame for this function is greater than that
allowable. The size is limited by the size of the internal RAM on the
8051.
%functions can't return arrays
A function can return only a scalar (simple) type or a structure. It cannot
return an array.
%functions can't return functions
A function cannot return a function. It can return a function
pointer. A function returning a pointer to a function could be
declared like this: int (* (name()))(). Note the many parentheses
that are necessary to make the parts of the declaration bind
correctly.
%functions nested too deep
This error is unlikely to happen with C code, since C cannot
have nested functions!
%garbage after operands
There is something on this line after the operands other
than a comment. This could indicate an operand error.
%garbage on end of line
There were non-blank and non-comment characters after the end of the operands
for this instruction. Note that a comment must be started with a semicolon.
%hc11 and h301 are incompatible
The options HC11 and H301 cannot be used together, since these
two processors have incompatible instruction sets.
%hex digit expected
After "0x" should follow at least one of the hex digits 0-9 and A-F
or a-f.
%ident records do not match
The object files passed to the linker do not have matching ident
records. This means they are for different processor types.
%identifier expected
Inside the braces of an "enum" declaration should be a
comma-separated list of identifiers.
%identifier redefined: *
This identifier has already been defined. It cannot be defined
again.
%identifier redefined: * (from line *)
This identifier has been defined twice. The 'from line ' value
is the line number of the first declaration.
%illegal # command *
The preprocessor has encountered a line starting with #, but which is not
followed by a recognized control keyword. This probably means the keyword
has been misspelt. Legal control keywords are:
assert asm define elif else endasm
endif error if ifdef ifndef include
line pragma undef
%illegal #if line
There is a syntax error in the expression following #if.
Check the expression to ensure it is properly constructed.
%illegal #undef argument
The argument to #undef must be a valid name. It must start
with a letter.
%illegal '#' directive
The compiler does not understand the "#" directive. It is probably a
misspelling of a pre-processor "#" directive.
%illegal -o flag
This -o flag is illegal. A -o option to the linker
must have a filename. There should be no space between the filenam
and the -o, e.g.
-ofile.obj
%illegal -p flag
The -p flag needs stuff after it. This is used for defining
psect mapping to the linker.
%illegal addressing mode
This addressing mode is not permitted.
%illegal character (*)
An illegal character has been encountered in the input. The value in
parentheses is the octal value of the character. Locate the line
and remove the character.
%illegal character (0*)
There is an illegal character in the input. This is the octal
code for the character.
%illegal character * in #if
There is a character in a #if expression that has no business
being there. Valid characters are the letters, digits and those
comprising the acceptable operators.
%illegal conversion
This expression implies a conversion between imcompatible types,
e.g. a conversion of a structure type into an integer.
%illegal conversion between pointer types
A pointer of one type (i.e. pointing to a particular kind of object)
has been converted into a pointer of a different type. This will
usually mean you have used the wrong variable, but if this is
genuinely what you want to do, use a typecast to inform the compiler
that you want the conversion and the warning will be suppressed.
%illegal conversion of integer to pointer
An integer has been assigned to or otherwise converted to a pointer
type. This will usually mean you have used the wrong variable,
but if this is
genuinely what you want to do, use a typecast to inform the compiler
that you want the conversion and the warning will be suppressed.
%illegal conversion of pointer to integer
A pointer has been assigned to or otherwise converted to a integral
type. This will usually mean you have used the wrong variable,
but if this is
genuinely what you want to do, use a typecast to inform the compiler
that you want the conversion and the warning will be suppressed.
%illegal flag *
This flag is unrecognized.
%illegal function qualifier(s)
A qualifier such as "const" or "volatile" has been applied to a
function. These qualifiers only make sense when used with an lvalue
(i.e. an expression denoting memory storage). Perhaps you left out a
star ("*") indicating that the function should return a pointer to a
qualified object.
%illegal indirect addressing
Indirect addressing is allowed in the 8051 assembler only with
certain operands:
mov a,@Rn where Rn is R0 or R1
movx a,@dptr
movc a,@a+dptr
%illegal initialisation
You can't initialise a "typedef" declaration, because it does not
reserve any storage that could be initialised.
%illegal or too many -p flags
There are too many -p options to the linker. Combine
some of them.
%illegal record type
There is an error in an object file. This is either an invalid object
file, or an internal error in the linker. Try recreating the object file.
%illegal register for indirection
An operand has indirection on a register that is not permitted
to be used for indirection.
%illegal relocation size: *
There is an error in the object code format read by the linker. This
either means you are using a linker that is out of date, or that
there is an internale error in the assembler or linker.
%illegal relocation type: *
An object file contained a relocation record with an illegal relocation type.
This probably means the file is corrupted or not an object file.
%illegal stack index
The index used in a cop-processor instruction must be
an absolute value 0-7.
%illegal switch *
This command line option was not understood.
%illegal type for array dimension
An array dimension must be either an integral type or an enumerated
value.
%illegal type for index expression
An index expression must be either integral or an enumerated value.
%illegal type for switch expression
A "switch" operation must have an expression that is either an
integral type or an enumerated value.
%illegal use of void expression
A void expression has no value and therefore you can't use it
anywhere an expression with a value is required, e.g. as an operand
to an arithmetic operator.
%image too big
The program image being constructed by objtohex is too big
for its virtual memory system.
%implicit conversion of float to integer
A floating point value has been assigned or otherwise converted to
an integral type. This could result in truncation of the floating
point value. A typecast will make this warning go away.
%implicit return at end of non-void function
A function which has been declared to return a value has an
execution path that will allow it to reach the end of the function
body, thus returning without a value. Either insert a return
statement with a value, or if the function is not to return a value,
declare it "void".
%implict signed to unsigned conversion
A signed number is being assigned or otherwise converted to a larger
unsigned type. Under the ANSI "value preserving" rules, this will
result in the signed value being first sign-extended to a signed
number the size of the target type, then converted to unsigned
(which involves no change in bit pattern). Thus an unexpected sign
extension can occur. To ensure this does not happen, first convert
the signed value to an unsigned equivalent, e.g. if you want to
assign a signed char to an unsigned int, first typecast the char
value to "unsigned char".
%inappropriate 'else'
An "else" keyword has been encountered that cannot be associated
with an "if" statement. This may mean there is a missing brace or
other syntactic error.
%inappropriate break/continue
A "break" or "continue" statement has been found that is not
enclosed in an appropriate control structure. "continue" can only be
used inside a "while", "for" or "do while" loop, while "break" can
only be used inside those loops or a "switch" statement.
%include files nested too deep
Macro expansions and include file handling have filled up the assembler's
internal stack. The maximum number of open macros and include files is 30.
%incompatible intermediate code version; should be *
The intermediate code file produced by P1 is not the correct version for
use with this code generator. This is either that incompatible versions of
one or more compilers have been installed in the same directory, or
a temporary file error has occured leading to corruption of a temporary
file. Check the setting of the TEMP environment variable. If it
refers to a long path name, change it to something shorter.
%incompatible intermediate code version; should be *.*
This error may indicate that the code generator is imcompatible with the first
pass (P1). This could occur if you installed an old compiler in the same
directory as a newer compiler for a different processor. Use separate installation
directories.
%incomplete * record body: length = *
An object file contained a record with an illegal size.
This probably means the file is truncated or not an object file.
%incomplete record
The object file passed to objtohex is corrupted.
%incomplete record: *
An object code record is incomplete. This is probably due
to a corrupted or invalid object module. Re-compile the source
file, watching for out of disk space errors etc.
%incomplete record: type = * length = *
This indicates that the object file is not a valid
HI-TECH object file, or that it has been truncated,
possibly due to running out of disk or RAMdisk space.
%inconsistent storage class
A declaration has conflicting storage classes. Only one storage
class should appear in a declaration.
%inconsistent type
Only one basic type may appear in a declaration, thus combinations
like "int float" are illegal.
%index offset too large
An offset on a Z80 indexed addressing form must lie in the range -128 to 127.
%indirection on illegal register
Indirection on this register is not possible.
%initialisation syntax
The initialisation of this object is syntactically incorrect. Check
for the correct placement and number of braces and commas.
%initializer in 'extern' declaration
A declaration containing the keyword "extern" has an initialiser.
This overrides the "extern" storage class, since to initialise an
object it is necessary to define (i.e. allocate storage for ) it.
%insufficient memory for macro def'n
There is not sufficient memory to store a macro definition.
%integer constant expected
A colon appearing after a member name in a structure declaration
indicates that the member is a bitfield. An integral constant must
appear after the colon to define the number of bits in the
bitfield.
%integer expression required
In an "enum" declaration, values may be assigned to the members, but
the expression must evaluate to a constant of type "int".
%integral argument required
An integral argument is required for this format specifier. Check
the number and order of format specifiers and corresponding arguments.
%integral type required
This operator requires operands that are of integral type only.
%invalid disable: *
This is an internal preprocessor error that should not occur.
%invalid number syntax
The syntax of a number is invalid. This can be, e.g. use of 8 or 9
in an octal number, or other malformed numbers.
%invalid operand size
The operand size specified for this instruction is
invalid. Check the programmers reference manual for this chip.
%invalid short addressing
Short addressing (e.g. 8 bit PC relative) has been used where this
is not possible.
%invalid short addressing override
A short addressing override has been used in conjunction with an addressing
mode that makes this invalid.
%jump out of range
A short jump ("JR") instruction has been given an address that is more than
128 bytes away from the present location. Use the "JP" opcode instead.
%jump target out of range
The address that this jump refers to is too far away to be
reached by this jump. Use a longer jump form, or a short
branch around a direct jump.
%label identifier expected
An identifier denoting a label must appear after "goto".
%large stack offset for *
The named variable has been allocated on the stack at an offset greater than
128. This will still work correctly, but will result in larger, slower
code. It is recommended that any auto (local to a function) variables be
declared before any arrays. Having an array at a large offset does not
cause any problems.
%lexical error
An unrecognized character or token has been seen in the input.
%line does not have a newline on the end
The last line in the file is missing the newline (linefeed, hex 0A)
from the end. Some editors will create such files, which can cause
problems for include files. The ANSI C standard requires all source
files to consist of complete lines only.
%line too long
This line is too long. It will not fit into the compiler's internal
buffers. It would require a line over 1000 characters long to do
this, so it would normally only occur as a result of macro
expansion.
%local illegal outside macros
The "LOCAL" directive is only legal inside macros. It defines local labels
that will be unique for each invocation of the macro.
%local psect '*' conflicts with global psect of same name
A local psect may not have the same name as a global psect.
%logical type required
The expression used as an operand to "if", "while" statements or to
boolean operators like ! and && must be a scalar integral type.
%long argument required
A long argument is required for this format specifier. Check the number
and order of format specifiers and corresponding arguments.
%macro * wasn't defined
A macro name specified in a -U option to the preprocessor was not
initially defined, and thus cannot be undefined.
%macro argument after % must be absolute
If the charactyer "%" is used to force evaluation of macro argument, the
argument must be an expression that evaluates to an absolute constant.
%macro argument may not appear after local
The list of labels after the directive "LOCAL" may not include any of the
formal parameters to the macro.
%macro expansions nested too deep
Macro expansions in the assembler are nested too deep. The limit is
30 macros and include files nested at one time.
%macro name used as symbol
A macro name has been used as a symbol. This is not permitted as the macro
name does not have a simple value.
%macro work area overflow
The total length of a macro expansion has exceeded the size of
an internal table. This table is normally 8192 bytes long. Thus
any macro expansion must not expand into a total of more than 8K bytes.
%member * redefined
This name of this member of the struct or union has already been
used in this struct or union.
%members cannot be functions
A member of a structure or a union may not be a function. It may be
a pointer to a function. The correct syntax for a function pointer
requires the use of parentheses to bind the star ("*") to the
pointer name, e.g. "int (*name)();".
%metaregister * can't be used directly
This is an internal compiler error. Contact HI-TECH Software technical support.
%mismatched comparision
A comparison is being made between a variable or expression and a constant value
which is not in the range of possible values for that expression, e.g. if
you compare an unsigned character to the constant value 300, the result will
always be false (not equal) since an unsigned character can NEVER equal 300.
As an 8 bit value it can represent only 0-255.
%misplaced '?' or ':', previous operator is *
A colon operator has been encountered in a #if expression
that does not match up with a corresponding ? operator. Check
parentheses etc.
%misplaced constant in #if
A constant in a #if expression should only occur in syntactically
correct places. This error is most probably caused by omission of
an operator.
%missing ')'
A closing parenthesis was missing from this expression.
%missing '=' in class spec
A class spec needs an = sign, e.g.
-Ctext=ROM
%missing ']'
A closing square bracket was missing from this expression.
%missing arg to -a
The -a option requires the name of a qualifier as an argument.
%missing arg to -u
The -U (undefine) option needs an argument, e.g.
-U_symbol
%missing arg to -w
The -W option (listing width) needs
a numeric argument.
%missing argument to 'pragma psect'
The pragma 'psect' requires an argument of the form oldname=newname
where oldname is an existing psect name known to the compiler, and
newname is the desired new name. Example:
#pragma psect bss=battery
%missing basic type: int assumed
This declaration does not include a basic type, so int has
been assumed. This declaration is not illegal, but it is
preferable to include a basic type to make it clear what
is intended.
%missing key in avmap file
A file required for producing Avocet format symbol
files is corrupted. Try re-installing the compiler.
%missing memory key in avmap file
A file required for producing Avocet format symbol
files is corrupted. Try re-installing the compiler.
%missing name after pragma 'inline'
The 'inline' pragma has the syntax:
#pragma inline func_name
where func_name is the name of a function which is
to be expanded to inline code. This pragma has no
effect except on functions specially recognized by the
code generator.
%missing name after pragma 'printf_check'
The pragma 'printf_check', which enable printf style format string
checking for a function, requires a function name, e.g.
#pragma printf_check sprintf
%missing number after % in -p option
The % operator in a -p option (for rounding boundaries)
must have a number after it.
%missing number after pragma 'pack'
The pragma 'pack' requires a decimal number as argument. For example
#pragma pack(1)
will prevent the compiler aligning structure members onto anything
other than one byte boundaries. Use this with caution as some
processors enforce alignment and will not operate correctly if
word fetches are made on odd boundaries (e.g. 68000, 8096).
%missing operand size
The operand size for this instruction is missing. It must be
supplied.
%missing size for align
The size of alignment required has not been specified. Use
ALIGN.W for word alignment.
%missing size for dc
A DC directive requires a size specifier, e.g. DC.B for byte.
%mixed 16 and 32 bit index registers
An indexed addressing mode must use only 16 bit or only
32 bit registers. They may not be used together.
%mod by zero in #if, zero result assumed
A modulus operation in a #if expression has a zero divisor. The
result has been assumed to be zero.
%module has code below file base of *
This module has code below the address given, but
the -C option has been used to specify that a binary
output file is to be created that is mapped to this
address. This would mean code from this module would have
to be placed before the beginning of the file! Check for
missing psect directives in assembler files.
%multi-byte constant * isn't portable
Multi-byte constants are not portable, and in fact will be
rejected by later passes of the compiler (this error comes
from the preprocessor).
%multiple free: *
This is an internal compiler error. Contact HI-TECH Software technical support.
%multiply defined symbol *
This symbol has been defined in more than one place in this module.
%multiply defined symbol: *
This symbol has been defined in more than one module.
%negative index offset
The index offset used here is negative. Index offsets must be
positive.
%nested comments
This warning is issued when nested comments are found.
A nested comment may indicate that a previous closing comment
marker is missing or malformed.
%no #asm before #endasm
A #endasm operator has been encountered, but there
was no previous matching #asm.
%no arg to -o
The assembler requires that an output file name argument be supplied after
the "-O" option. No space should be left between the -O and the filename.
%no case labels
There are no case labels in this switch!
%no case labels
There are no case labels in this switch statement.
%no end record
This object file has no end record. This probably means
it is not an object file.
%no end record found
An object file did not contain an end record.
This probably means the file is corrupted or not an object file.
%no file argument
There was no file argument to the assembler.
%no file arguments
The assembler has been invoked without any file arguments. It cannot assemble
anything.
%no identifier in declaration
The identifier is missing in this declaration. This error can also
occur where the compiler has been confused by such things as missing
closing braces.
%no memory for string buffer
P1 was unable to allocate memory for the longest string encountered,
as it attempts to sort and merge strings. Try reducing the number or length
of strings in this module.
%no psect specified for function variable/argument allocation
This is probably caused by omission of correct run-time startoff
module. Check the linker arguments, or "Object Files..." in HPD.
%no space for macro def'n
The assembler has run out of memory.
%no start record: entry point defaults to zero
None of the object files passed to the linker contained a start record.
The start address of the program has been set to zero. This may be
harmless, but it is recommended that you define a start address in your
startup module by using the "END" directive.
%no. of arguments redeclared
The number of arguments in this function declaration does not agree
with a previous declaration of the same function.
%nodecount = *
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%non-constant case label
A case label in this switch statement has a value which is not
a constant.
%non-prototyped function declaration: *
A function has been declared using old-style (K&R) arguments. It is
preferable to use prototype declarations for all functions. If the
function has no arguments, declare it as e.g. "int func(void)".
%non-scalar types can't be converted
You can't convert a structure, union or array to anything else. You
can convert a pointer to one of those things, so perhaps you left out
an ampersand ("&").
%non-void function returns no value
A function that is declared as returning a value has a "return"
statement that does not specify a return value.
%not a member of the struct/union *
This identifier is not a member of the structure or union type with
which it used here.
%not a variable identifier: *
This identifier is not a variable; it may be some other kind of
object, e.g. a label.
%not an argument: *
This identifier that has appeared in a K&R stype argument declarator
is not listed inside the parentheses after the function name. Check
spelling.
%object code version is greater than *
The object code version of an object module is higher than the highest
version the linker is known to work with. Check that you are using
the correct linker.
%object file is not absolute
The object file passed to objtohex has relocation items in it.
This may indicate it is the wrong object file, or that the
linker or objtohex have been given invalid options.
%one segment override only permitted
Only one segment override is permitted in an instruction.
%only functions may be qualified interrupt
The qualifier "interrupt" may not be applied to anything except a
function.
%only functions may be void
A variable may not be "void". Only a function can be "void".
%only lvalues may be assigned to or modified
Only an lvalue (i.e. an identifier or expression directly denoting
addressable storage) can be assigned to or otherwise modified. A
typecast does not yield an lvalue. To store a value of different
type into a variable, take the address of the variable, convert it
to a pointer to the desired type, then dereference that pointer,
e.g. "*(int *)&x = 1" is legal whereas "(int)x = 1" is not.
%only register storage class allowed
The only storage class allowed for a function parameter is
"register".
%oops! -ve number of nops required!
An internal error has occured. Contact HI-TECH.
%operand error
The operand to this opcode is invalid. Check you assembler reference manual
for the proper form of operands for this instruction.
%operand size undefined
The size of an operand is neither explicitly defined, nor can the
assembler determine it from register usage. Add an explicit ,word or ,byte
or whatever.
%operands of * not same pointer type
The operands of this operator are of different pointer types. This
probably means you have used the wrong pointer, but if the code is
actually what you intended, use a typecast to suppress the error
message.
%operands of * not same type
The operands of this operator are of different pointer. This
probably means you have used the wrong variable, but if the code is
actually what you intended, use a typecast to suppress the error
message.
%operator * in incorrect context
An operator has been encountered in a #if expression
that is incorrectly placed, e.g. two binary operators are
not separated by a value.
%option not supported
This is option is currently not supported.
%out of far memory
The compiler has run out of far memory. Try removing TSR's etc. If your
system supports EMS memory, the compiler will be able to use up to 64K
of this, so if it is not enable, try enabling EMS.
%out of far memory (wanted * bytes)
The code generator could not allocate any more far memory. Try reducing
the memory used by TSR's etc.
%out of memory
The compiler has run out of memory. If you have unnecessary TSRs
loaded, remove them. If you are running the compiler from inside
another program, try running it directly from the command prompt.
Similarly, if you are using HPD, try using the command line compiler
driver instead.
%out of near memory
The compiler has run out of near memory. This is probably due to
too many symbol names. Try splitting the program up, or reducing
the number of unused symbols in header files etc.
%out of space in macro * arg expansion
A macro argument has exceeded the length of an internal
buffer. This buffer is normally 4096 bytes long.
%output file cannot be also an input file
The linker has detected an attempt to write its output file
over one of its input files. This cannot be done, because it needs to
simultaneously read and write input and output files.
%page width must be >= 41
The listing page widthe must be at least 41 characters. Any less will not
allow a properly formatted listing to be produced.
%phase error
The assembler has calculated a different value for a symbol
on two different passes. This is probably due to bizarre use
of macros or conditional assembly.
%phase error in macro args
The assembler has detected a difference in the definition of a symbol on
the first and a subsequent pass.
%phase error on temporary label
The assembler has detected a difference in the definition of a symbol on
the first and a subsequent pass.
%pointer required
A pointer is required here. This often means you have used "->" with
a structure rather than a structure pointer.
%pointer to * argument required
A pointer argument is required for this format specifier. Check the number
and order of format specifiers and corresponding arguments.
%pointer to non-static object returned
This function returns a pointer to a non-static (e.g. automatic)
variable. This is likely to be an error, since the storage associated
with automatic variables becomes invalid when the function returns.
%pop immediate illegal
It is not possible to pop into an immediate value.
%pop of allreg!!
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%pop of register *
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%popreg - bad reg *(*)
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%popreg - bad reg
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%popreg - trying to pop * with 0* regbits - can't do it!
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%portion of expression has no effect
Part of this expression has no side effects, and no effect on
the value of the expression.
%possible pointer truncation
A pointer qualifed "far" has been assigned to a default pointer or a
pointer qualified "near", or a default pointer has been assigned to
a pointer qualified "near". This may result in truncation of the
pointer and loss of information, depending on the memory model in
use.
%preprocessor assertion failure
The argument to a preprocessor #assert directive has evaluated
to zero. This is a programmer induced error.
%probable missing '}' in previous block
The compiler has encountered what looks like a function or other
declaration, but the preceding function has not been ended with a
closing brace. This probably means that a closing brace has been
omitted from somewhere in the previous function, although it may
well not be the last one.
%psect '*' re-orged
This psect has its address multiply defined. Check
the linker options.
%psect * cannot be in classes *
A psect cannot be in more than one class. This is either due to assembler
modules with conflicting class= options, or use of the -C option
to the linker.
%psect * in more than one group
This psect has been defined to be in more than one group.
%psect * not loaded on * boundary
This psect has a relocatability requirement that is not
met by the load address given in a -P option. For
example if a psect must be on a 4K byte boundary, you
could not start it at 100H.
%psect * not relocated on * boundary
This psect is not relocated on the required
boundary. Check the relocatability of the psect and correct
the -p option. if necessary.
%psect * not specified in -p option
This psect was not specified in a "-P" option to the linker. It has
been linked at the end of the program, which is probably not where
you wanted it.
%psect * re-orged
This psect has had its start address specified
more than once.
%psect * selector value redefined
The selector value for this psect has been defined more than once.
%psect * type redefined: *
This psect has had its type defined differently by different modules.
This probably means you are trying to link imcompatible object modules,
e.g. linking 386 flat model code with 8086 real mode code.
%psect exceeds max size: *
The psect has more bytes in it than the maximum allowed.
%psect is absolute: *
This psect is absolute and should not have an address specified in
a -P option.
%psect may not be local and global
A psect may not be declared to be local if it has already been declared to
be (default) global.
%psect origin multiply defined: *
The origin of this psect is defined more than once.
%psect property redefined
A property of a psect has been defined in more than place to be
different.
%psect reloc redefined
The relocatability of this psect has been defined differently
in two or more places.
%psect selector redefined
The selector associated with this psect has been defined differently
in two or more places.
%psect size redefined
The maximum size of this psect has been defined differently
in two or more places.
%push of allreg!!
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%push of register *
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%pushreg - bad reg
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%pushreg - bad reg *(*)
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%pushreg - trying to push * with 0* regbits - can't do it!
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%radix value out of range
The value given for the current radix is out of range. It must
be between 2 and 16.
%read error on *
The linker encountered an error trying to read this file.
%record too long
This indicates that the object file is not a valid
HI-TECH object file.
%record too long: *
An object file contained a record with an illegal size.
This probably means the file is corrupted or not an object file.
%recursive function calls:
These functions (or function) call each other recursively.
One or more of these functions has statically allocated
local variables (compiled stack). Either use the reentrant
keyword (if supported with this compiler) or recode to
avoid recursion.
%recursive macro definition of *
The named macro has been defined in such a manner that
expanding it causes a recursive expansion of itself!
%redefining macro *
The macro specified is being redefined, to something different
to the original definition. If you want to deliberately redefine
a macro, use #undef first to remove the original definition.
%redundant & applied to array
The address operator "&" has been applied to an array. Since using
the name of an array gives its address anyway, this is unnecessary
and has been ignored.
%reginit!!!???
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%regused - bad arg to g
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%relocation error
It is not possible to add together two relocatable quantities. A constant
may be added to a relocatable value, and two relocatable addresses in the
same psect may be subtracted. An absolute value must be used in various
places where the assembler must know a value at assembly time.
%relocation offset * out of range 0..*
An object file contained a relocation record with a relocation offset
outside the range of the preceding text record. This means the object
file is probably corrupted.
%relocation too complex
The complex relocation in this expression is too big to be inserted
into the object file.
%remsym error
Internal error. Contact HI-TECH technical support.
%rept argument must be >= 0
The argument to a "REPT" directive must be greater than zero.
%restore without matching save
A restore (to restore options) has been done before a corresponding save.
%revlog - bad op
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%save/restore too deep
The save directive has been used too many times without matching
restores.
%scale value invalid
The scale value in the operand is invalid. It may only be 1, 2, 4
or 8.
%scale value must be a constant
The scale value in an operand must be an absolute constant.
%seek error: *
The linker could not seek when writing an output file.
%segment * overlaps segment *
The named segments have overlapping code or data. Check the addresses being
assigned by the "-P" option.
%signatures do not match: *
The specified function has different signatures in different modules.
This means it has been declared differently, e.g. it may have been
prototyped in one module and not another. Check what declarations for
the function are visible in the two modules specified and make sure they
are compatible.
%signed bitfields not supported
Only unsigned bitfields are supported. If a bitfield is declared to
be type "int", the compiler still treats it as unsigned.
%simple integer expression required
A simple integral expression is required after the operator "@",
used to associate an absolute address with a variable.
%simple type required for *
A simple type (i.e. not an array or structure)is required as an operand to this operator.
%size error
You have attempted to store a value in a space that is too small, e.g. trying
to initialize a byte location with an address that is 16 bits.
%sizeof yields 0
The code generator has taken the size of an object and found
it to be zero. This almost certainly indicates an error
in your declaration of a pointer, e.g. you may have declared
a pointer to a zero length array. In general, pointers to arrays
are of little use. If you require a pointer to an array of objects
of unknown length, you only need a pointer to a single object
that can then be indexed or incremented.
%storage class illegal
A structure or union member may not be given a storage class. Its
storage class is determined by the storage class of the structure.
%storage class redeclared
A variable or function has been re-declared with a different storage
class. This can occur where there are two conflicting declarations,
or where an implicit declaration is followed by an actual
declaration.
%strange character * after ##
A character has been seen after the token catenation operator
## that is neither a letter nor a digit. Since the result of this
operator must be a legal token, the operands must be tokens containing
only letters and digits.
%strange character after # *
There is an unexpected character after #.
%string expected
The operand to an "asm" statement must be a string enclosed in
parentheses.
%string too long
This string is too long. Shorten it.
%struct/union member expected
A structure or union member name must follow a dot (".") or arrow
("->").
%struct/union redefined: *
A structure or union has been defined more than once.
%struct/union required
A structure or union identifier is required before a dot (".").
%struct/union tag or '{' expected
An identifier denoting a structure or union or an opening brace must
follow a "struct" or "union" keyword.
%structure too big for function return
The size of the structure type of this function is too big to allow
the code generator to generate code to return it.
%symbol * cannot be global
There is an error in an object file, where a local symbol has been
declared global. This is either an invalid object file, or an internal
error in the linker. Try recreating the object file.
%symbol * has erroneous psect: *
There is an error in an object file, where a symbol has an invalid psect.
This is either an invalid object file, or an internal
error in the linker. Try recreating the object file.
%symbol * is not external
This symbols is not external, and should not be in an EXTERN directive.
It is probably defined locally, and thus should be PUBLIC or GLOBAL.
%symbol * not defined in #undef
The symbol supplied as argument to #undef was not already defined.
This is a warning only, but could be avoided by including the
#undef in a #ifdef ... #endif block.
%syntax error
A syntax error has been detexted. This could be caused a number of things.
%syntax error in -a spec
The -A spec is invalid. A valid -A spec should be
something like:
-AROM=1000h-1FFFh
%syntax error in checksum list
There is a syntax error in a checksum list read by the linker. The
checksum list is read from standard input by the linker, in response
to an option. Re-read the manual on checksum listt.
%text does not start at 0
Code in some things must start at zero. Here it doesn't.
%text offset too low
You aren't likely to see this error. Rhubarb!
%text record has bad length: *
There is an error in an object file.
This is either an invalid object file, or an internal
error in the linker. Try recreating the object file.
%text record has length too small: *
This indicates that the object file is not a valid
HI-TECH object file.
%this function too large - try reducing level of optimization
A large function has been encountered when using a -Og (global
optimization) switch. Try re-compiling without the
global optimization, or reduce the size of the function.
%this is a struct
This identifier following a "union" or "enum" keyword is already the tag
for a structure, and thus should only follow the keyword "struct".
%this is a union
This identifier following a "struct" or "enum" keyword is already the tag
for a union, and thus should only follow the keyword "union".
%this is an enum
This identifier following a "struct" or "union" keyword is already the tag
for an enumerated type, and thus should only follow the keyword "enum".
%too few arguments
This function requires more arguments than are provided in this
call.
%too few arguments for format string
There are too few arguments for this format string. This would result
in a garbage value being printed or converted at run time.
%too many (*) enumeration constants
There are too many enumeration constants in an enumerated type.
The maximum number of enumerated constants allowed in an enumerated
type is 512.
%too many (*) structure members
There are too many members in a structure or union. The maximum number
of members allowed in one structure or union is 512.
%too many arguments
This function does not accept as many arguments as there are here.
%too many arguments for format string
There are too many arguments for this format string. This is harmless,
but may represent an incorrect format string.
%too many arguments for macro
A macro may only have up to 31 parameters, as per the C Standard.
%too many arguments in macro expansion
There were too many arguments supplied in a macro invocation.
The maximum number allowed is 31.
%too many cases in switch
There are too many case labels in this switch statement. The maximum
allowable number of case labels in any one switch statement is 511.
%too many comment lines - discarding
The compiler is generating assembler code with embedded comments,
but this function is so large that an excessive number of source
line comments are being generated. This has been suppressed so
that the optimizer will not run out of memory loading comment lines.
%too many errors
There were so many errors that the compiler has given up. Correct
the first few errors and many of the later ones will probably go away.
%too many include directories
A maximum of 7 directories may be specified for the preprocessor
to search for include files.
%too many initializers
There are too many initializers for this object. Check the number of
initializers against the object definition (array or structure).
%too many macro parameters
There are too many macro parameters on this macro definition.
%too many nested #* statements
#if, #ifdef etc. blocks may only be nested to a maximum
of 32.
%too many psect class specifications
There are too many psect class specifications (-C options)
%too many psect pragmas
Too many "pragma psect" directives have been used.
%too many psects
There are too many psects! Boy, what a program!
%too many qualifier names
There are too many qualifier names specified.
%too many relocation items
Objtohex filled up a table. This program is just way
too complex!
%too many segment fixups
There are too many segment fixups in the object file given to objtohex.
%too many segments
There are too many segments in the object file given to objtohex.
%too many symbols
There are too many symbols for the assemblers symbol table. Reduce the number
of symbols in your program. If it is the linker producing this error,
suggest changing some global to local symbols.
%too many temporary labels
There are too many temporary labels in this assembler file. The assembler
allows a maximum of 2000 temporary labels.
%too may symbols
There are too many symbols for the assemblers symbol table. Reduce the number
of symbols in your program.
%too much indirection
A pointer declaration may only have 16 levels of indirection.
%too much pushback
This error should not occur, and represents an internal
error in the preprocessor.
%type conflict
The operands of this operator are of incompatible types.
%type redeclared
The type of this function or object has been redeclared. This can
occur because of two incompatible declarations, or because an
implicit declaration is followed by an incompatible declaration.
%type specifier reqd. for proto arg
A type specifier is required for a prototyped argument. It is not
acceptable to just have an identifier.
%unbalanced paren's, op is *
The evaluation fo a #if expression found mismatched parentheses.
Check the expression for correct parenthesisation.
%undefined enum tag: *
This enum tag has not been defined.
%undefined identifier: *
This symbol has been used in the program, but has not been
defined or declared. Check for spelling errors.
%undefined label: *
This label has not been defined anywhere in the current function. Check
for spelling errors.
%undefined operand size
The size of the operand to this instruction was not defined.
Use ",byte" or ",word", or ",dword" as appropriate.
%undefined public symbol *
A symbol declared PUBLIC is not defined in this module. Use GLOBAL or EXTRN
or define the symbol.
%undefined shift (* bits)
An attempt has been made to shift a value by a number of bits equal to or
greater than the number of bits in the data type, e.g. shifting a long by
32 bits. This will produce an undefined result on many processors. This is
non-portable code and is flagged as having undefined results by the C Standard.
%undefined struct/union
This structure or union tag is undefined. Check spelling etc.
%undefined struct/union: *
The specified structure or union tag is undefined. Check spelling
etc.
%undefined symbol *
The named symbol is not defined, and has not been specified "GLOBAL".
%undefined symbol * in #if, 0 used
A symbol on a #if expression was not a defined preprocessor
macro. For the purposes of this expression, its value has been
taken as zero.
%undefined symbol:
The symbol following is undefined at link time. This could be due
to spelling error, or failure to link an appropriate module.
%undefined symbols:
A list of symbols follows that were undefined at link time.
%undefined temporary label
A temporary label has been referenced that is not defined. Note that a temporary
label must have a number >= 0.
%undefined variable: *
This variable has been used but not defined at this point
%unexpected end of file
This probably means an object file has been truncated because of
a lack of disk (or RAMdisk) space.
%unexpected eof
An end-of-file was encountered unexpectedly. Check syntax.
%unexpected text in #control line ignored
This warning occurs when extra characters appear on the end of
a control line, e.g.
#endif something
The "something" will be ignored, but a warning is issued. It is
preferable (and in accordance with Standard C) to enclose the
"something" as a comment, e.g.
#endif /* something */
%unknown predicate *
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%unknown addressing mode
This addressing mode is not recognized by the assembler
%unknown arg to opt
This argument to OPT is not recognized.
%unknown arg type to lpsize
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%unknown complex operator *
There is an error in an object file. This is either an invalid object
file, or an internal error in the linker. Try recreating the object file.
%unknown directive
This directive is not known to the assembler.
%unknown fnrec type *
This indicates that the object file is not a valid
HI-TECH object file.
%unknown option *
This option to the preprocessor is not recognized.
%unknown pragma *
An unknow pragma directive was encountered.
%unknown psect: *
This psect has been listed in a -P option, but is not defined
in any module within the program.
%unknown qualifier '*' given to -a
The -a option to P1 should have as its argument a defined qualifier name,
either a standard qualifier or a qualifier introduced with the -Q option.
%unknown record type: *
An invalid object module has been read by the linker. It is either
corrupted or not an object file.
%unknown symbol type *
The symbol type encountered is unknown to this linker.
Check that the correct linker is being used.
%unreachable code
This section of code will never be executed, because there is no
execution path by which it could be reached. Look for missing "break"
statements inside a control structure like "while" or "for".
%unreasonable matching depth
This is an internal code generator error. Contact HI-TECH technical
support with full details of the code that caused this error.
%unrecognized argument to opt
This argument to OPT is not recognized.
%unrecognized option to -o: *
The code generator has been given a -O option with an unknown
modifier.
%unrecognized option to -z: *
The code generator has been passed a -Z option it does not understand.
This should not happen if it is invoked with the standard driver.
%unrecognized qualifer name after 'strings'
The pragma 'strings' requires a list of valid qualifer names. For
example
#pragma strings const code
would add const and code to the current string qualifiers. If no
qualifiers are specified, all qualification will be removed from
subsequent strings. The qualifer names must be recognized by the
compiler.
%unterminated #if[n][def] block from line *
A #if or similar block was not terminated with a matching
#endif. The line number is the line on which the #if block
began.
%unterminated macro arg
An argument to a macro is not terminated. Note that angle brackets ("<>") are
used to quote macro arguments.
%unterminated string
A string constant appears not to have a closing quote missing.
%unterminated string in macro body
A macro definition contains a string that lacks a closing
quote.
%unused constant: *
This enumerated constant is never used. Maybe it isn't needed at all.
%unused enum: *
This enumerated type is never used. Maybe it isn't needed at all.
%unused label: *
This label is never used. Maybe it isn't needed at all.
%unused member: *
This structure member is never used. Maybe it isn't needed at all.
%unused structure: *
This structure tag is never used. Maybe it isn't needed at all.
%unused typedef: *
This typedef is never used. Maybe it isn't needed at all.
%unused union: *
This union type is never used. Maybe it isn't needed at all.
%unused variable declaration: *
This variable is never used. Maybe it isn't needed at all.
%unused variable definition: *
This variable is never used. Maybe it isn't needed at all.
%variable may be used before set: *
This variable may be used before it has been assigned a value. Since it is
an auto variable, this will result in it having a random value.
%void function cannot return value
A void function cannot return a value. Any "return" statement should
not be followed by an expression.
%while expected
The keyword "while" is expected at the end of a "do" statement.
%work buffer overflow *
An internal preprocessor buffer has been filled. This buffer has a
size of 4096 bytes.
%write error (out of disk space?) *
Probably means that the hard disk or RAM disk is
full.
%write error on *
A write error occured on the named file. This probably means you have
run out of disk space.
%write error on object file
An error was reported when the assembler was attempting to write an object file.
This probably means there is not enough disk space.
%wrong number of macro arguments for * - * instead of *
A macro has been invoked with the wrong number of arguments.
%{ expected
An opening brace was expected here.
%} expected
A closing brace was expected here.